From b4711587366d0fdcd410e8aacacef10d5dae7f4f Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Kol=C3=A5s?= Date: Fri, 16 Nov 2018 01:50:22 +0100 Subject: [PATCH] babl-fish: print error message instead of blowing stack --- babl/babl-fish.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/babl/babl-fish.c b/babl/babl-fish.c index 65c482e..8c239eb 100644 --- a/babl/babl-fish.c +++ b/babl/babl-fish.c @@ -104,11 +104,13 @@ match_conversion (Babl *conversion, { void **data = inout; + if ((Babl *) conversion->conversion.destination == (Babl *) *data) { *data = (void *) conversion; return 1; } + return 0; } @@ -123,14 +125,26 @@ babl_conversion_find (const void *source, if (BABL (source)->type.from_list) babl_list_each (BABL (source)->type.from_list, match_conversion, &data); if (data != (void*)destination) /* didn't change */ + { return data; + } data = NULL; if (BABL (source)->class_type == BABL_MODEL) { const Babl *srgb_source = BABL (source)->model.model ? BABL (source)->model.model:source; const Babl *srgb_destination = BABL (destination)->model.model ? BABL (destination)->model.model:destination; - Babl *reference = babl_conversion_find (srgb_source, srgb_destination); + + + Babl *reference; + + if (srgb_source == source && srgb_destination == destination) + { + fprintf (stderr, "expected finding model conversion %s to %s", babl_get_name (source), babl_get_name (destination)); + return NULL; + } + + reference = babl_conversion_find (srgb_source, srgb_destination); /* when conversions are sought between models, with non-sRGB chromaticities, we create the needed conversions from existing ones on the fly, and -- 2.30.2